Preparativos

# Carga de paquetes
library(dplyr)
library(DT)
library(leaflet)
library(leaflet.extras)
library(leafem)
library(raster)
library(sf)
library(spData)
# Carga de capas de orquídeas
orquideas <-
  sf::st_read(
  "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/orchidaceae-cr-registros.csv",
  options = c(
    "X_POSSIBLE_NAMES=decimalLongitude",
    "Y_POSSIBLE_NAMES=decimalLatitude"
  ),
  quiet = TRUE
)

# Carga de capa de las Áreas Silvestres Protegidas (ASP)
asp <-
  sf::st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/sinac/asp/asp-wgs84.geojson",
    quiet = TRUE
  )

# Asignación de proyecciones
sf::st_crs(asp) = 4326
sf::st_crs(orquideas) = 4326

Limpieza de valores de alta incertidumbre (Mayores a 1000) y valores NA

# Asignar a los valores NA una variable
orquideas$species[orquideas$species == ""] <- "orquideas"

# Conversión de los valores
orquideas <- 
  orquideas %>%
  mutate(coordinateUncertaintyInMeters = as.numeric(coordinateUncertaintyInMeters)) %>%
  mutate(eventDate = as.Date(eventDate, "%Y-%m-%d"))

cat("Cantidad original de registros:", nrow(orquideas))
## Cantidad original de registros: 29863
# Limpieza de los valores de alta incertidumbre
orquideas <-
  orquideas %>%
  filter(!is.na(coordinateUncertaintyInMeters) & coordinateUncertaintyInMeters <= 1000)

cat("Cantidad de registros despues de limpiar los valores de alta incertidumbre:", nrow(orquideas))
## Cantidad de registros despues de limpiar los valores de alta incertidumbre: 677
# Limpieza de los NA en los registros de presencia
orquideas <-
  orquideas %>%
  filter(species!= "orquideas")

cat("Cantidad de registros despues de limpiar los valores de alta incertidumbre NA:", nrow(orquideas))
## Cantidad de registros despues de limpiar los valores de alta incertidumbre NA: 646
# Limpieza del data asp
asp <-
  asp %>%
  filter(descripcio!="Area Marina de Manejo" & descripcio!="Area marina protegida")

Mapa de la cantidad de registros por Área Silvestre Protegia (ASP)

Creación de un conjunto de datos con la cantidad de registros por Área Silvestre Protegia

# Creación del conjunto de datos
registros_asp <-
  asp %>%
  sf::st_make_valid() %>%
  sf::st_join(orquideas) %>%
  group_by(nombre_asp) %>%
  summarize(especies = n())

# Asignación de crs al conjunto
sf::st_crs(registros_asp) = 4326

Asignación de una paleta de colores

# Paleta de colores
colores <-
  colorNumeric(palette = "RdPu",
               domain = registros_asp$especies,
               na.color = "transparent")

Mapeo

# Mapeo
leaflet() %>%
  addProviderTiles(providers$Esri.WorldGrayCanvas, 
                   group = "Esri.WorldGrayCanvas") %>%
  addTiles(group = "OMS") %>%
  addPolygons(
    data = registros_asp,
    fillColor = ~ colores (registros_asp$especies),
    fillOpacity = 1,
    stroke = TRUE,
    color = "black",
    weight = 1,
    popup = paste(
      paste(
        "<strong>Área Silvestre Protegida:</strong>",
        registros_asp$nombre_asp
      ),
      paste(
        "<strong>Cantidad de orquídeas:</strong>",
        registros_asp$especies
        
      ),
      sep = '<br/>'
    ),
    group = "Cantidad de registros"
  ) %>%
  addLayersControl(baseGroups = c("Esri.WorldGrayCanvas", "OMS"),
                   overlayGroups = c("Cantidad de registros")) %>%
  addSearchOSM() %>%
  addMouseCoordinates() %>%
  addScaleBar(position = "bottomleft", options = scaleBarOptions(imperial = FALSE)) %>%
  addLegend(
  position = "bottomleft",
  pal = colores,
  values = registros_asp$especies,
  group = "Cantidad de registros",
  title = "Cantidad orquídeas")